package com.gshg.log.cleanlog.utils;

import lombok.extern.slf4j.Slf4j;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

@Slf4j
public class ZIPUtil {


    public static void zipFiles(File[] arrayFile, File zipFile){
        if(null == arrayFile || arrayFile.length == 0 || null == zipFile){
            return;
        }

        //初期化ZIP流
        ZipOutputStream out = null;

        try{
            //构建ZIP流对象
            out = new ZipOutputStream(new FileOutputStream(zipFile));

            //循环处理传过来的集合
            for(File inFile : arrayFile){
                //定义ZipEntry对象
                ZipEntry entry = new ZipEntry(inFile.getName());
                //赋予ZIP流对象属性
                out.putNextEntry(entry);
                int len = 0 ;
                //缓冲
                byte[] buffer = new byte[1024];

                //构建FileInputStream流对象
                FileInputStream fis;
                fis = new FileInputStream(inFile);
                while ((len = fis.read(buffer)) > 0) {
                    out.write(buffer, 0, len);
                    out.flush();
                }
                //关闭closeEntry
                out.closeEntry();
                //关闭FileInputStream
                fis.close();
            }

        }catch (IOException e) {
            log.error(e.getMessage(), e);
        }finally{
            try {
                //最后关闭ZIP流
                out.close();
            } catch (IOException e) {
                log.error(e.getMessage(), e);
            }
        }
    }


    public static void zipFiles(File[] arrayFile, String zipFileStorePathAndName){
        if(null == arrayFile || arrayFile.length == 0){
            return;
        }
        //构建压缩文件File
        File zipFile = new File(zipFileStorePathAndName);
        zipFiles(arrayFile, zipFile);


    }

}
